package com.itheima.mapper;

import com.itheima.pojo.Brand;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author Xiao
 * @date 2021/8/23
 */
public interface BrandMapper {
    //1. 查询所有
    List<Brand> selectAll();

    //2. 查询详情：根据id查询
    Brand selectById(int id);

    //3. 多条件查询
    //3.1 散装参数：@Param("SQL参数占位符名称")
    /*List<Brand> selectByCondition(
            @Param("status") int status,
            @Param("brandName") String brandName,
            @Param("companyName") String companyName);*/
    //3.2 对象参数：对象的属性名称要和SQL参数占位符明湖曾一致
//    List<Brand> selectByCondition(Brand brand);
    //3.3 map集合参数：map集合的键要和SQL参数占位符名称一致
    List<Brand> selectByCondition(Map map);

    //4. 单条件动态查询
    // 不知道给哪个查询条件，参数传入一个Brand对象，将来传入哪个属性就根据哪个属性查询
    List<Brand> selectAllByConditionSingle(Brand brand);

    //5.1 添加数据
    void addBrand(Brand brand);
    //5.2 主键返回
    void addBrand2(Brand brand);

    //6.1 修改全部字段
    int updateBrand(Brand brand);
    //6.2 动态修改字段
    int updateBrand2(Brand brand);

    //7.1 删除一行数据
    void deleteById(int id);
    //7.1 批量删除数据
    //不使用@Param，MyBatis默认map集合key的名称为array
//    void deleteByIds(int[] ids);
    //使用@Param注解改变map集合的默认key的名称
    void deleteByIds(@Param("ids") int[] ids);

}
